#ifndef _ESP8266_MQTT_H_
#define _ESP8266_MQTT_H_

#include <SoftwareSerial.h>

class ESP8266_MQTT {
   public:
    // 构造函数
    ESP8266_MQTT(int rxPin, int txPin, const char* ssid, const char* password);

    // 初始化
    void begin(long baudRate);

    // 连接 WiFi
    void connectWiFi();

    // 配置 MQTT 用户信息
    void configMQTTUser(const char* clientId, const char* user,
                        const char* password);

    // 连接 MQTT 服务器
    void connectMQTT(const char* server, int port);

    // 订阅主题
    void subscribe(const char* topic, int qos);

    // 发布消息
    void publish(const char* topic, const char* message, int qos, int retain);

    // 监听 MQTT 消息
    bool listen(String& topic, String& payload);

    // 发送 AT 指令
    void sendATCommand(const char* command, unsigned long timeout);

   private:
    SoftwareSerial esp8266;
    const char* ssid;
    const char* password;
};

#endif